/**
 * 语言解析
 */

define(['languageData'], function(LD){
    var I18N = {
        /*
        *   @存储语言数据
        * */
        DATA : LD
        /*
        *   @ 使用的语言
        * */
        ,language: localStorage.language||'zh-cn'
        /*
        *   @ 修改使用的语言
        * */
        ,setLanguage: function(language){
            this.language = language;
        }
        /*
         *   @解析string 语言标记  用于解析html中的{{i18n-}}
         *   str:html string
         *   pageName:页面名称 、
         * */
        ,parse: function(str, pageName){
            var _this = this;
            if(!pageName){
                console.error('I18N解析失败，原因pageName='+pageName);
                return;
            }
            if(!_this.language){
                console.error('I18N解析失败，原因language='+_this.language);
                return;
            }
            var key= '',
                parseStr = '';
            parseStr = str.replace(/\{\{i18n-(.+?)\}\}/g, function(t){
                key = t.slice(7, t.length - 2);
                try{
                    return _this.DATA[pageName][key][_this.language] || '';
                }catch (e){
                    console.warn(pageName + '未找到与'+ key +'相匹配的'+ _this.language +'语言');
                    return '';
                }
            });
            return parseStr;
        }
        /*
        *   生成所需的文本信息 适用于js内部更改DOM时使用
         *   pageName:页面名称
         *   key: 指向的文本索引
         *   v1,v2,v3:可为空，字符串格式，只存在v1时可为数组
        * */
        ,getText: function(pageName, key, v1, v2, v3){

            var _this = this;
            var intrusion = [];
            //处理参数，实现多态化
            if(arguments.length == 3 && typeof(arguments[2]) == 'object'){
                intrusion = arguments[2];
            }
            else if(arguments.length > 2){
                for(var i=2; i< arguments.length; i++){
                    intrusion.push(arguments[i]);
                }
            }
            var _lg = '';
            try{
                _lg = _this.DATA[pageName][key][_this.language] || '';
                if(!intrusion || intrusion.length == 0){
                    return _lg;
                }
                _lg = _lg.replace(/{\d+}/g, function( word ){
                    return intrusion[word.match(/\d+/)];
                });
                return _lg;
            }catch (e){
                console.warn('未找到与'+ key +'相匹配的'+ _this.language +'语言');
                return '';
            }
        }
    };
    return I18N;
});
